學習英文大小寫判斷以及新的函式庫花了不少時間。目前差字典(dict)的大小排序,跟輸出格式。
中間的運算解出來,不過學完這一題,之後再解字串應該會快很多。
個人是用Python3
import re,string
# 讀取測資
def inp():
#宣告
global deta #global是全域函數,這樣才能累積前面的資料
deta={}
lineco=int(input())
for i in range(lineco):
sinput=list(input().strip().replace(" ",""))
count(sinput)
print(deta)
這邊推薦用Python解題的邦友,參考這位作者的網站
def count(st):
#宣告
global deta
az=tuple(string.ascii_letters)
for i in range(len(st)):
ct=st.pop()
if ct in az:
ct=ct.upper()
if ct in deta:
deta[ct]+=1
else:
deta.update({ct:1})
inp()
az
這邊是用到函式庫string,後面括弧則是大寫A~Z+小寫a~z。如果考試現場忘記,可以用土法煉鋼用手打。雖然看起來很蠢,但是不到最後我是不會放棄的。
計算這行長度做迴圈
取出這行尾字
請問他是大小寫a~z嗎? (因為有標點符號,這邊定義要明確
統一變成大寫英文字母(忘記upper的話可以IF("a")?"A"
請問他在資料庫嗎?
是,該資料+1
不是,資料建檔起始值為1
{'U': 2, 'E': 4, 'T': 6, 'Q': 1, 'Y': 1, 'O': 3, 'N': 2, 'M': 1, 'I': 5, 'A': 2, 'S': 7, 'H': 2, 'W': 2, 'C': 1}
不好意思剛剛看到你的文章,我比較好奇的是為什麼你要把 ascii_letters
再用 tuple
包起來呢?大致閱讀了你的程式碼,這題應該是要轉大小後算字母數對吧
那我可能會寫:
import collections
counter = collections.Counter()
def count(s):
s = s.upper()
for c in s:
if not c.isalpha():
continue
counter[c] += 1
有點久了,好像是因為剛學,只要測資能過就行。collections模組感覺很適合解字串,要是早點看到就好,謝謝你的分享。